#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
完整版AI童话书Web应用
"""

import os
import json
import random
from datetime import datetime

# 创建Flask应用
from flask import Flask, render_template, request, jsonify, session
import secrets

app = Flask(__name__)
app.secret_key = secrets.token_hex(16)

# 故事模板数据
STORY_TEMPLATES = {
    "magic_forest": {
        "title": "魔法森林的冒险",
        "beginning": "在一个神秘的魔法森林里，住着一只聪明的小{animal}。有一天，{animal}发现了一个闪闪发光的{object}...",
        "choices": [
            {"id": "pickup", "text": "拿起这个神奇的物品"},
            {"id": "observe", "text": "小心地观察周围"},
            {"id": "friends", "text": "寻找其他动物朋友"}
        ]
    },
    "underwater": {
        "title": "海底世界探险",
        "beginning": "在深蓝色的海底，小{animal}游过了美丽的珊瑚礁。突然，{animal}看到了一座神秘的{object}...",
        "choices": [
            {"id": "explore", "text": "游向神秘的建筑"},
            {"id": "discuss", "text": "和海洋朋友们商量"},
            {"id": "treasure", "text": "寻找宝藏线索"}
        ]
    },
    "space": {
        "title": "太空探险记",
        "beginning": "在遥远的太空中，宇航员小{animal}驾驶着飞船来到了一个神奇的星球。这里有着{object}般的美丽景色...",
        "choices": [
            {"id": "land", "text": "降落到星球表面"},
            {"id": "scan", "text": "扫描星球环境"},
            {"id": "signal", "text": "发送友好信号"}
        ]
    }
}

# 故事续集
STORY_CONTINUATIONS = {
    "pickup": "当{animal}触碰到{object}时，突然间整个森林都亮了起来！原来这是一个魔法{object}，它能够实现{animal}的愿望。森林里的其他动物们都围了过来，大家一起分享这个神奇的发现...",
    "observe": "{animal}仔细观察后发现，这个{object}周围有很多小脚印，看起来其他小动物也来过这里。突然，{animal}听到了轻柔的音乐声，似乎{object}在召唤着什么...",
    "friends": "{animal}呼唤朋友们，很快小兔子、小松鼠都跑了过来。大家一起看着这个神奇的{object}，决定共同探索它的秘密。团结的力量让{object}散发出温暖的光芒...",
    "explore": "{animal}勇敢地游向{object}，发现这是一座古老的海底宫殿。宫殿里传来美妙的音乐声，似乎有海洋精灵在欢迎{animal}的到来...",
    "discuss": "海豚朋友告诉{animal}，这座{object}里住着善良的海洋精灵，她会帮助迷路的小动物找到回家的路。{animal}决定进入{object}寻求帮助...",
    "treasure": "{animal}在{object}附近发现了一张古老的藏宝图，上面画着通往神秘宝藏的路线。按照地图的指引，{animal}开始了寻宝之旅...",
    "land": "{animal}小心翼翼地降落在星球表面，发现这里的{object}会发出七彩的光芒。当{animal}走近时，{object}开始变化形状，仿佛在与{animal}交流...",
    "scan": "扫描结果显示，这个星球上的{object}含有未知的能量。{animal}决定收集一些样本，突然发现{object}竟然是活的，正在友好地向{animal}招手...",
    "signal": "{animal}发送的友好信号得到了回应！星球上的{object}开始闪烁，似乎在回应{animal}的问候。不久，一群友善的外星生物出现了..."
}

# 角色和物品列表
ANIMALS = ["小兔", "小鹿", "小熊", "小狐狸", "小松鼠", "小猫", "小狗", "小鸟"]
OBJECTS = ["水晶", "宝石", "魔法书", "古老的钥匙", "神秘的盒子", "发光的花朵", "魔法棒", "星星"]

@app.route('/')
def index():
    """主页"""
    return render_template('complete_index.html')

@app.route('/api/generate_story', methods=['POST'])
def generate_story():
    """生成新故事"""
    try:
        data = request.get_json()
        template_key = data.get('template', 'magic_forest')
        
        if template_key not in STORY_TEMPLATES:
            template_key = 'magic_forest'
        
        template = STORY_TEMPLATES[template_key]
        animal = random.choice(ANIMALS)
        obj = random.choice(OBJECTS)
        
        story_text = template['beginning'].format(animal=animal, object=obj)
        
        # 保存到session
        session['current_story'] = {
            'template': template_key,
            'animal': animal,
            'object': obj,
            'text': story_text,
            'choices': template['choices']
        }
        
        return jsonify({
            'success': True,
            'story': {
                'title': template['title'],
                'text': story_text,
                'choices': template['choices']
            }
        })
    except Exception as e:
        return jsonify({'success': False, 'error': str(e)})

@app.route('/api/continue_story', methods=['POST'])
def continue_story():
    """继续故事"""
    try:
        data = request.get_json()
        choice_id = data.get('choice_id')
        
        current_story = session.get('current_story')
        if not current_story:
            return jsonify({'success': False, 'error': '没有当前故事'})
        
        if choice_id not in STORY_CONTINUATIONS:
            return jsonify({'success': False, 'error': '无效的选择'})
        
        continuation = STORY_CONTINUATIONS[choice_id].format(
            animal=current_story['animal'],
            object=current_story['object']
        )
        
        # 更新故事
        current_story['text'] += "\n\n" + continuation
        session['current_story'] = current_story
        
        return jsonify({
            'success': True,
            'continuation': continuation
        })
    except Exception as e:
        return jsonify({'success': False, 'error': str(e)})

@app.route('/api/get_templates')
def get_templates():
    """获取故事模板列表"""
    templates = []
    for key, template in STORY_TEMPLATES.items():
        templates.append({
            'id': key,
            'title': template['title']
        })
    return jsonify({'templates': templates})

@app.route('/health')
def health():
    """健康检查"""
    return jsonify({'status': 'ok', 'timestamp': datetime.now().isoformat()})

if __name__ == '__main__':
    print("🧚‍♀️ AI童话书Web应用启动中...")
    print("📖 访问地址: http://localhost:5000")
    print("🎭 功能: 交互式AI童话故事生成")
    print("=" * 50)
    
    app.run(host='0.0.0.0', port=5000, debug=True)